Package de.yaams.extensions.basemap.tiled.mapeditor.dialogs

Source Code of de.yaams.extensions.basemap.tiled.mapeditor.dialogs.ObjectDialog

/*
* Tiled Map Editor, (c) 2004-2006
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* Adam Turk <aturk@biggeruniverse.com> Bjorn Lindeijer <bjorn@lindeijer.nl>
*/

package de.yaams.extensions.basemap.tiled.mapeditor.dialogs;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.undo.UndoableEditSupport;

import de.yaams.extensions.basemap.tiled.core.MapObject;
import de.yaams.extensions.basemap.tiled.mapeditor.Resources;
import de.yaams.extensions.basemap.tiled.mapeditor.undo.ChangeObjectEdit;
import de.yaams.extensions.basemap.tiled.mapeditor.widget.IntegerSpinner;
import de.yaams.extensions.basemap.tiled.mapeditor.widget.VerticalStaticJPanel;
import de.yaams.extensions.basemap.tiled.util.TiledConfiguration;

/**
* A dialog for editing the name, type, size and properties of an object.
*
* @version $Id$
*/
public class ObjectDialog extends PropertiesDialog {
  /**
   *
   */
  private static final long serialVersionUID = -4091942167299040186L;
  private JTextField objectName, objectType;
  private JTextField objectImageSource;
  private IntegerSpinner objectWidth, objectHeight;
  private final MapObject object;
  private final UndoableEditSupport undoSupport;

  private static String path;

  /* LANGUAGE PACK */
  private static final String DIALOG_TITLE = Resources.getString("dialog.object.title");
  private static final String NAME_LABEL = Resources.getString("dialog.object.name.label");
  private static final String TYPE_LABEL = Resources.getString("dialog.object.type.label");
  private static final String IMAGE_LABEL = Resources.getString("dialog.object.image.label");
  private static final String WIDTH_LABEL = Resources.getString("dialog.object.width.label");
  private static final String HEIGHT_LABEL = Resources.getString("dialog.object.height.label");
  private static final String UNTITLED_OBJECT = Resources.getString("general.object.object");
  private static final String BROWSE_BUTTON = Resources.getString("general.button.browse");

  public ObjectDialog(JFrame parent, MapObject object, UndoableEditSupport undoSupport) {
    super(parent, object.getProperties());
    this.object = object;
    this.undoSupport = undoSupport;
    setTitle(DIALOG_TITLE);
    pack();
    setLocationRelativeTo(parent);
  }

  @Override
  public void init() {
    super.init();
    JLabel nameLabel = new JLabel(NAME_LABEL);
    JLabel typeLabel = new JLabel(TYPE_LABEL);
    JLabel imageLabel = new JLabel(IMAGE_LABEL);
    JLabel widthLabel = new JLabel(WIDTH_LABEL);
    JLabel heightLabel = new JLabel(HEIGHT_LABEL);

    objectName = new JTextField(UNTITLED_OBJECT);
    objectType = new JTextField();
    objectImageSource = new JTextField();
    objectWidth = new IntegerSpinner(0, 0, 1024);
    objectHeight = new IntegerSpinner(0, 0, 1024);

    final JButton browseButton = new JButton(BROWSE_BUTTON);
    browseButton.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent actionEvent) {
        String startLocation = path;
        if (startLocation == null) {
          startLocation = TiledConfiguration.fileDialogStartLocation();
        }
        JFileChooser ch = new JFileChooser(startLocation);

        int ret = ch.showOpenDialog(ObjectDialog.this);
        if (ret == JFileChooser.APPROVE_OPTION) {
          path = ch.getSelectedFile().getAbsolutePath();
          objectImageSource.setText(path);
        }
      }
    });

    // Combine browse button and image source text field
    JPanel imageSourcePanel = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 1;
    c.fill = GridBagConstraints.HORIZONTAL;
    imageSourcePanel.add(objectImageSource, c);
    c.gridx = 1;
    c.weightx = 0;
    c.fill = GridBagConstraints.NONE;
    c.insets = new Insets(0, 5, 0, 0);
    imageSourcePanel.add(browseButton, c);

    JPanel miscPropPanel = new VerticalStaticJPanel();
    miscPropPanel.setLayout(new GridBagLayout());
    miscPropPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));
    c = new GridBagConstraints();
    c.anchor = GridBagConstraints.EAST;
    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 0;
    c.fill = GridBagConstraints.NONE;
    c.insets = new Insets(5, 0, 0, 5);
    miscPropPanel.add(nameLabel, c);
    c.gridy = 1;
    miscPropPanel.add(typeLabel, c);
    c.gridy = 2;
    miscPropPanel.add(imageLabel, c);
    c.gridy = 3;
    miscPropPanel.add(widthLabel, c);
    c.gridy = 4;
    miscPropPanel.add(heightLabel, c);
    c.insets = new Insets(5, 0, 0, 0);
    c.fill = GridBagConstraints.HORIZONTAL;
    c.gridx = 1;
    c.gridy = 0;
    c.weightx = 1;
    miscPropPanel.add(objectName, c);
    c.gridy = 1;
    miscPropPanel.add(objectType, c);
    c.gridy = 2;
    miscPropPanel.add(imageSourcePanel, c);
    c.gridy = 3;
    miscPropPanel.add(objectWidth, c);
    c.gridy = 4;
    miscPropPanel.add(objectHeight, c);

    mainPanel.add(miscPropPanel, 0);
  }

  @Override
  public void updateInfo() {
    super.updateInfo();
    objectName.setText(object.getName());
    objectType.setText(object.getType());
    objectImageSource.setText(object.getImageSource());
    objectWidth.setValue(object.getWidth());
    objectHeight.setValue(object.getHeight());
  }

  @Override
  protected void buildPropertiesAndDispose() {
    // Make sure the changes to the object can be undone
    undoSupport.postEdit(new ChangeObjectEdit(object));

    object.setName(objectName.getText());
    object.setType(objectType.getText());
    object.setImageSource(objectImageSource.getText());
    object.setWidth(objectWidth.intValue());
    object.setHeight(objectHeight.intValue());
    super.buildPropertiesAndDispose();
  }
}
TOP

Related Classes of de.yaams.extensions.basemap.tiled.mapeditor.dialogs.ObjectDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.